#pragma warning disable 108
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using Cephei;
using Cephei.Core;
using Cephei.Core.Generic;
using Microsoft.FSharp.Core;
using Cephei.QL.Models.Equity;
using Cephei.QL.Instruments;
using Cephei.QL;
namespace Cephei.QL.Pricingengines.Vanilla
{
    /// <summary> 
	/// ! References:  Heston, Steven L., 1993. A Closed-Form Solution for Options with Stochastic Volatility with Applications to Bond and Currency Options.  The review of Financial Studies, Volume 6, Issue 2, 327-343.  A. Sepp, Pricing European-Style Options under Jump Diffusion Processes with Stochastic Volatility: Applications of Fourier Transform (<http://math.ut.ee/~spartak/papers/stochjumpvols.pdf>)  R. Lord and C. Kahl, Why the rotation count algorithm works, http://papers.ssrn.com/sol3/papers.cfm?abstract_id=921335  H. Albrecher, P. Mayer, W.Schoutens and J. Tistaert, The Little Heston Trap, http://www.schoutens.be/HestonTrap.pdf  J. Gatheral, The Volatility Surface: A Practitioner's Guide, Wiley Finance  \ingroup vanillaengines  \test the correctness of the returned value is tested by reproducing results available in web/literature and comparison with Black pricing.
	/// </summary>
    [Guid ("2336BCC5-F380-4a78-8B78-4CAD7C445737"),ComVisible(true)]
	public interface IAnalyticHestonEngine : Cephei.QL.IPricingEngine
	{
		///////////////////////////////////////////////////////////////
        // Methods
        //
        /// <summary> 
		/// 
		/// </summary>
		 IAnalyticHestonEngine Calculate {get;}
        /// <summary> 
		/// 
		/// </summary>
		 UInt64 NumberOfEvaluations {get;}
    }   

    /// <summary> 
	/// ! References:  Heston, Steven L., 1993. A Closed-Form Solution for Options with Stochastic Volatility with Applications to Bond and Currency Options.  The review of Financial Studies, Volume 6, Issue 2, 327-343.  A. Sepp, Pricing European-Style Options under Jump Diffusion Processes with Stochastic Volatility: Applications of Fourier Transform (<http://math.ut.ee/~spartak/papers/stochjumpvols.pdf>)  R. Lord and C. Kahl, Why the rotation count algorithm works, http://papers.ssrn.com/sol3/papers.cfm?abstract_id=921335  H. Albrecher, P. Mayer, W.Schoutens and J. Tistaert, The Little Heston Trap, http://www.schoutens.be/HestonTrap.pdf  J. Gatheral, The Volatility Surface: A Practitioner's Guide, Wiley Finance  \ingroup vanillaengines  \test the correctness of the returned value is tested by reproducing results available in web/literature and comparison with Black pricing. Factory
	/// </summary>
   	[ComVisible(true)]
    public interface IAnalyticHestonEngine_Factory 
    {
        ///////////////////////////////////////////////////////////////
        // Factory methods
        //
        /// <summary> 
		/// 
		/// </summary>
	    IAnalyticHestonEngine Create (Cephei.QL.Models.Equity.IHestonModel model, Microsoft.FSharp.Core.FSharpOption<UInt64> integrationOrder);
        /// <summary> 
		/// 
		/// </summary>
	    IAnalyticHestonEngine Create (Cephei.QL.Models.Equity.IHestonModel model, Double relTolerance, UInt64 maxEvaluations);
    }
}

